<?php
require_once $_SERVER['DOCUMENT_ROOT']."/crc/geral/uteis/imports.php";
require_once $_SERVER['DOCUMENT_ROOT']."/crc/controle/iPortaControler.php";

class PortaControler implements iPortaControler{
	
	private $portaDao;	

	public function PortaControler(){
		require_once $_SERVER['DOCUMENT_ROOT']."/crc/persistencia/dao/PortaDao.php";
		$this->portaDao = new PortaDao();
	}
	
	public function listarPortasPorDispositivo($id_dispositivo){
		return $this->portaDao->listarPortasPorDispositivo($id_dispositivo);
	}
	public function listarPortasPorDispositivoECasa($id_dispositivo,$id_casa){
		return $this->portaDao->listarPortasPorDispositivoECasa($id_dispositivo, $id_casa);
	}
	public function listarSensores($id_casa){
		return $this->portaDao->listarSensores($id_casa);
	}
	public function consultarPortaPorID ($id_casa, $id_dispositivo, $id_porta){
		return $this->portaDao->consultarPortaPorID($id_casa, $id_dispositivo, $id_porta);
	}
	public function atualizarPorta($id_porta, $id_dispositivo, $id_casa, $acao){		
		$status = ($acao == 1)?ATIVO:INATIVO;		
		return $this->portaDao->atualizarPorta($id_porta,$id_dispositivo,$id_casa,$status);
	}
	
	public function atualizarSensor($id_porta, $id_dispositivo, $id_casa, $acao){		
		$status = ($acao)?ATIVO:INATIVO;
		return $this->portaDao->atualizarSensor($id_porta,$id_dispositivo,$id_casa,$status);
	}
	
	public function listarTodasPortas($inicio,$fim,$limite,$campo,$valor){
	
		return $this->portaDao->listarTodasPortas($inicio, $fim, $limite, $campo, $valor);
	}
	public function listarPortasPorCasaDispositivos($id_dispositivo,$id_casa,$inicio,$fim,$limite,$campo,$valor){
		return $this->portaDao->listarPortasPorCasaDispositivos($id_dispositivo, $id_casa, $inicio, $fim, $limite, $campo, $valor);
	}
	public function listarConfigAlertas($id_casa){		
		return $this->portaDao->listarConfigAlertas($id_casa);
	}
	
	public function alterarPorta(Porta $porta, $id_porta){
	
		require_once $_SERVER['DOCUMENT_ROOT']."/crc/geral/uteis/imports.php";
		require_once $_SERVER['DOCUMENT_ROOT']."/crc/modelo/Porta.php";
		
		
		
		$novaPorta = new Porta();
		
		$idPorta = $porta->getIdPorta();
		$dispositivo = $porta->getDispositivo();
		$descricao = antiInjection($porta->getDescricao());
		$status = antiInjection($porta->getStatus());
		$tipo = antiInjection($porta->getTipo());
		$casa = $porta->getCasa();
		
		$novaPorta->setIdPorta($idPorta);
		$novaPorta->setDispositivo($dispositivo);
		$novaPorta->setDescricao($descricao);
		$novaPorta->setStatus($status);
		$novaPorta->setTipo($tipo);
		$novaPorta->setCasa($casa);
		
		return $this->portaDao->alterarPorta($novaPorta, $id_porta);
		
	}
	
	public function desativarPorta($id_casa,$id_dispositivo,$id_porta){
		return $this->portaDao->desativarPorta($id_casa, $id_dispositivo, $id_porta);
	}
	
	
	
	public function cadastrarPorta($porta){
		
		require_once $_SERVER['DOCUMENT_ROOT']."/crc/persistencia/dao/PortaDao.php";
		require_once $_SERVER['DOCUMENT_ROOT']."/crc/modelo/Porta.php";
		
		$novaPorta = new Porta();
		
		$idPorta = $porta->getIdPorta();
		$descricao = antiInjection($porta->getDescricao());
		$status = antiInjection($porta->getStatus());
		$tipo = antiInjection($porta->getTipo());
		
		
		$novaPorta->setIdPorta($idPorta);
		$novaPorta->setDispositivo($porta->getDispositivo());
		$novaPorta->setDescricao($descricao);
		$novaPorta->setStatus($status);
		$novaPorta->setTipo($tipo);
		$novaPorta->setCasa($porta->getCasa());
		
		return $this->portaDao->inserirPorta($novaPorta);		
	}
	public function verificarNotificacao($porta){
		return $this->portaDao->vericarNotificacao($porta);
	}
	
	public function listarPortasDisponiveisCadastro($id_dispositivo,$id_casa){
		return $this->portaDao->listarPortasDisponiveisCadastro($id_dispositivo, $id_casa);
	}
	
	public function listarPortasDisponiveisAlterar($id_dispositivo,$id_casa,$id_porta){
		return $this->portaDao->listarPortasDisponiveisAlterar($id_dispositivo,$id_casa,$id_porta);
	}
	
	public function ativarAlerta($idCasa,$idDispositivo,$idPorta){
		return $this->portaDao->ativarAlerta($idCasa, $idDispositivo, $idPorta);
	}
	public function desativarAlerta($idCasa,$idDispositivo,$idPorta){
		return $this->portaDao->desativarAlerta($idCasa, $idDispositivo, $idPorta);
	}
	
}	